package com.testpro.learn.varval

/**
 * 建议使用val定义 底层会对数据的处理速度增快 效率会高
 *
 *
 */
object VarValTest {

  /**
   * var   定义一个对象  这个对象指向内存地址可以发生改变
   * val   定义一个不可变更内存地址的对象，但是对象的属性可以改变；
   * var   相当于java中的 变量生命
   * val   相当于java中的final 修饰的对象
   *
   * @param args
   */

  def main(args: Array[String]): Unit = {


    var dog = new Dog
    dog.name = "var_Dog"
    //dog.age = 15; //此处将对象中的不可变属性修改了值相当于改变了内存地址 更改不成功

    val dogVal = new Dog;
    dogVal.name = "val_dog"

    dog = dogVal //var声明的变量内存的地址可以被修改

    println(dogVal.name)
    println(dog.name)

    //  dogVal = dog;//此处将val声明对象中的尝试改变内存地址，所以更改不成功


  }

  class Dog {

    var name: String = _;

    val age: Int = 5;

  }

}
